import request from '@/utils/request';
import qs from 'qs';
import type { PageResult, ResponseData } from '../typing';
import type { Permission, Role } from './login';
export async function getRoles() {
    return request.get<any, PageResult<Role>>('/roles');
}
export async function getPermissions(): Promise<PageResult<Permission>> {
    return request.get<any, PageResult<Permission>>('/permissions');
}
export async function addPermission(data: Permission) {
    return request.post<Permission, any>('/permission', data);
}
export async function updatePermission(data: Permission) {
    return request.put<Permission, any>('/permission', data);
}
// 参数接口
export interface UpdateRoleParams {
    // 角色名称 */
    name: string;
    // 角色编号 */
    code: string;
    // 状态 */
    status: number;
    // 菜单ID列表 */
    menuIds?: Record<string, unknown>[];
    // 岗位ID列表 */
    postIds?: Record<string, unknown>[];
    // 角色ID */
    id: number;
    // 是否只看本人数据:0->否,1->是 */
    himself: number;
}
/**
 * 更新角色信息
 * @param {object} params 管理后台 - 角色信息更新 Request VO
 * @param {string} params.name 角色名称
 * @param {string} params.code 角色编号
 * @param {number} params.status 状态
 * @param {array} params.menuIds 菜单ID列表
 * @param {array} params.postIds 岗位ID列表
 * @param {number} params.id 角色ID
 * @returns
 */
export function updateRole(params: UpdateRoleParams): Promise<ResponseData<boolean>> {
    return request.put(`/system/role/update`, params);
}
// 响应接口
export interface GetRolePageRes {
    code: number;
    data: {
        total: number;
        size: number;
        records: {
            createTime: Record<string, unknown>;
            updateTime: Record<string, unknown>;
            creator: number;
            updater: number;
            tenantId: number;
            // 角色ID */
            id: number;
            // 角色名称 */
            name: string;
            // 角色权限字符串 */
            code: string;
            // 显示顺序 */
            sort: number;
            // 数据范围（1：全部数据权限 2：自定数据权限 3：本部门数据权限 4：本部门及以下数据权限） */
            dataScope: number;
            // 数据范围(指定部门数组) */
            dataScopeDeptIds: string;
            // 角色状态（0停用1正常） */
            status: number;
            // 角色类型 */
            type: number;
            // 备注 */
            remark: string;
        }[];
        current: number;
        pages: number;
    };
    msg: string;
}
export interface QueryRoleParams {
    name?: string;
    current: number;
    size: number;
}
/**
 * 获得角色信息分页
 * @param {string} name 角色名称
 * @param {string} current 当前第几页(默认1)
 * @param {string} size 每页条数(默认20)
 * @returns
 */
export function getRolePage(params: QueryRoleParams): Promise<GetRolePageRes> {
    return request.get(`/system/role/page?${qs.stringify(params)}`);
}
// 参数接口
export interface CreateRoleParams {
    // 角色名称 */
    name: string;
    // 角色编号 */
    code: string;
    // 状态 */
    status: number;
    // 菜单ID列表 */
    menuIds?: Record<string, unknown>[];
    // 岗位ID列表 */
    postIds?: Record<string, unknown>[];
    // 是否只看本人数据:0->否,1->是 */
    himself: number;
}
/**
 * 创建角色信息
 * @param {object} params 管理后台 - 角色信息创建 Request VO
 * @param {string} params.name 角色名称
 * @param {string} params.code 角色编号
 * @param {number} params.status 状态
 * @param {array} params.menuIds 菜单ID列表
 * @param {array} params.postIds 岗位ID列表
 * @returns
 */
export function createRole(params: CreateRoleParams): Promise<ResponseData<number>> {
    return request.post(`/system/role/create`, params);
}
// 响应接口
export interface GetSimpleRoleListRes {
    code: number;
    data: {
        // 角色编号 */
        id: number;
        // 角色名称 */
        name: string;
    }[];
    msg: string;
}
/**
 * 获取角色精简信息列表
 * @returns
 */
export function getSimpleRoleList(): Promise<GetSimpleRoleListRes> {
    return request.get(`/system/role/list-all-simple`);
}
// 响应接口
export interface GetRoleRes {
    code: number;
    data: {
        createTime: Record<string, unknown>;
        updateTime: Record<string, unknown>;
        creator: number;
        updater: number;
        tenantId: number;
        // 角色ID */
        id: number;
        // 角色名称 */
        name: string;
        // 角色权限字符串 */
        code: string;
        // 显示顺序 */
        sort: number;
        // 数据范围（1：全部数据权限 2：自定数据权限 3：本部门数据权限 4：本部门及以下数据权限） */
        dataScope: number;
        // 数据范围(指定部门数组) */
        dataScopeDeptIds: string;
        // 角色状态（0停用1正常） */
        status: number;
        // 角色类型 */
        type: number;
        // 备注 */
        remark: string;
    };
    msg: string;
}
/**
 * 获得角色信息
 * @param {string} id
 * @returns
 */
export function getRole(id: string): Promise<GetRoleRes> {
    return request.get(`/system/role/get/${id}`);
}
/**
 * 删除角色信息
 * @param {string} id
 * @returns
 */
export function deleteRole(id: number): Promise<ResponseData<boolean>> {
    return request.delete(`/system/role/delete/${id}`);
}

export function getRoleAll() {
    return request.get(`/openapi/role/all`);
}
